IF exists(SELECT * FROM dbo.sysobjects WHERE name='leesStudiebegeleiding' AND xtype='P') 
BEGIN
	DROP PROCEDURE leesStudiebegeleiding
END
GO

CREATE          Procedure leesStudiebegeleiding
-- De procedure leest de records van een welbepaalde lln. uit de tabel 'dubbeltekst' en 'contracten' in en geeft het resultaat als 
-- XML-bestand weer, in het veld xml van de eerste record.
  (@logon varchar(50), @hetInr varchar(7))
As
set nocount on

-- Een tijdelijke tabel, die de XML-gegevens zal bevatten in de eerste rij, eerste kolom (T-SQL kan nl. geen text exporteren).
create table #werk  (xml ntext null)
insert into #werk 
values ('')

-- Een pointer naar de XML-tekst:
declare @@ptrval varbinary(16)
select @@ptrval = textptr(xml) from #werk
declare @tekst varchar(8000)

-------------------------------------------------
-- Controle op leesrechten
-------------------------------------------------

if not(dbo.sec_magDossierZien(@logon,@hetInr)=1)
BEGIN
  set @tekst = '<status>De leraars die deze leerling begeleiden, hebben verder inzage in het dossier. '  +
	' Als jij ten onrechte uitgesloten bent van deze mogelijkheid, kan je contact opnemen ' +
	' met de pedagogisch directeur.' +
	'</status>'
  updatetext #werk.xml @@ptrval null 0 @tekst 
END
else
BEGIN
----------------------------------------------------------------------------
--            Consultatie van de tabel persoonlijkeGegevens
----------------------------------------------------------------------------
declare @socCat varchar(50)
declare @medCat varchar(50)
declare @lerCat varchar(50)
declare @sportCat varchar(50)

declare @socOpm varchar(8000)
declare @medOpm varchar(8000)
declare @lerOpm varchar(8000)
declare @opm varchar(8000)

declare @socAt bit
declare @medAt bit
declare @lerAt bit


declare deCursor cursor local for 
   select 
	l.medischeCategorie,convert(varchar(8000),l.medischeOpmerking),l.medischeAttest,
	l.socialeCategorie,convert(varchar(8000),l.socialeOpmerking),l.socialeAttest,
	l.lerenStuderenCategorie,convert(varchar(8000),l.lerenStuderenOpmerking),l.lerenStuderenAttest,
	l.sportCategorie, convert(varchar(8000),l.opmerking)
   from leerlingen..persoonlijkeGegevens  as l 
   where l.inschrijvingsNr = @hetINr
   for read only

set @Tekst=''
open deCursor
fetch next from deCursor into @medCat,@medOpm, @medAt,
	@socCat,@socOpm, @socAt,
	@lerCat,@lerOpm, @lerAt,
	@sportCat,@Opm

if (@@fetch_status = 0) and (
	len(@medCat) > 0 or len(@medOpm) > 0 or @medAt = 1 or
	len(@socCat)>0 or len(@socOpm)>0 or @socAt=1 or
	len(@lerCat)>0 or len(@lerOpm)>0 or @lerAt=1 or
	len(@sportCat)>0 or len(@Opm) > 0)
begin 
  updatetext #werk.xml @@ptrval null 0 '<persoonlijk>'
  set @tekst=''     

  if @medAt = 1  
      	set @Tekst = @Tekst + '<attest />'
  if isNull(@medCat,'') <> ''  
      	set @Tekst = @Tekst + '<categorie>' + @medCat + '</categorie>'
  if isNull(@medOpm,'') <> ''
  	set @tekst = @tekst + '<opmerking>' + @medOpm + '</opmerking>' 
  if len(@tekst) > 0 
    begin
      set @tekst = '<medisch>' + @tekst + '</medisch>'
      updatetext #werk.xml @@ptrval null 0 @tekst
      set @tekst=''	
    end	

  if @socAt = 1  
      	set @Tekst = @Tekst + '<attest />'
  if isNull(@socCat,'') <> ''  
      	set @Tekst = @Tekst + '<categorie>' + @socCat + '</categorie>'
  if isNull(@socOpm,'') <> ''
  	set @tekst = @tekst + '<opmerking>' + @socOpm + '</opmerking>' 
  if len(@tekst) > 0 
    begin
      set @tekst = '<sociaal>' + @tekst + '</sociaal>'
      updatetext #werk.xml @@ptrval null 0 @tekst
      set @tekst=''	
    end

  if @lerAt = 1  
      	set @Tekst = @Tekst + '<attest />'
  if isNull(@lerCat,'') <> ''  
      	set @Tekst = @Tekst + '<categorie>' + @lerCat + '</categorie>'
  if isNull(@lerOpm,'') <> ''
  	set @tekst = @tekst + '<opmerking>' + @lerOpm + '</opmerking>' 
  if len(@tekst) > 0 
    begin
      set @tekst = '<lerenStuderen>' + @tekst + '</lerenStuderen>'
      updatetext #werk.xml @@ptrval null 0 @tekst
      set @tekst=''	
    end

  if isNull(@sportCat,'') <> '' 
    begin 
      set @Tekst = @Tekst + '<sport>' + @sportCat + '</sport>'
      updatetext #werk.xml @@ptrval null 0 @tekst
      set @tekst=''	
    end
  
  if isNull(@opm,'') <> ''  
    begin
      set @Tekst = @Tekst + '<persOpmerking>' + @opm + '</persOpmerking>'
      updatetext #werk.xml @@ptrval null 0 @tekst
      set @tekst = ''	
    end

  updatetext #werk.xml @@ptrval null 0 '</persoonlijk>'
  set @tekst=''
end
deallocate deCursor
----------------------------------------------------------------------------
--            Consultatie van de tabel extraZorg
----------------------------------------------------------------------------
declare @beg1 varchar(4)
declare @beg2 varchar(4)
declare @beg3 varchar(4)
declare @beg4 varchar(4)

declare @a1 bit
declare @a2 bit
declare @a3 bit
declare @a4 bit
declare @begeleiders varchar(100)
declare @begeleider varchar(4)
declare @deBeschrijving varchar(2000)
declare @beschrijving varchar(50)

declare deCursor cursor local for 
   select l.beschrijving,l.begeleiding1,l.begeleiding2,l.begeleiding3,
	l.begeleiding4,l.aanspreek1,l.aanspreek2,l.aanspreek3,l.aanspreek4
   from leerlingenExtraZorg  as l 
   where l.inschrijvingsNr = @hetINr
   for read only

set @deBeschrijving=''
set @begeleiders = ''
set @beschrijving = ''
open deCursor
fetch next from deCursor into @beschrijving,@beg1, @beg2, @beg3,@beg4,@a1,@a2,@a3,@a4
if (@@fetch_status = 0)
begin      
  while (@@fetch_status=0)
    begin
      if @a1 = 1  
      	set @begeleiders = @begeleiders + ' ' + @beg1
      if @a2 = 1  
      	set @begeleiders = @begeleiders + ' ' + @beg2
      if @a3 = 1 
      	set @begeleiders = @begeleiders + ' ' + @beg3
      if @a4 = 1  
      	set @begeleiders = @begeleiders + ' ' + @beg4
      set @deBeschrijving = @deBeschrijving + isNull(' ' + @beschrijving,'')
      fetch next from deCursor into @beschrijving,@beg1, @beg2, @beg3,@beg4,@a1,@a2,@a3,@a4
    end
  set @tekst = '<extraZorg><beschrijving>' + @deBeschrijving + '</beschrijving>'
		+ '<begeleiders>' + @begeleiders + '</begeleiders></extraZorg>'
  updatetext #werk.xml @@ptrval null 0 @tekst
end
deallocate deCursor
----------------------------------------------------------------------------
--               consultatie van de tabel 'deContracten'
----------------------------------------------------------------------------
declare @jaar varchar(4)
declare @volgNr int
declare @titel varchar(55)
declare @aard varchar(50)
declare @tussen varchar(1000)
declare @resultaat varchar(8000)

declare deCursor cursor local for 
   select l.jaar,l.titel,l.aard,l.volgNr
   from deContracten  as l 
   where l.inschrijvingsNr = @hetINr
   order by l.jaar,l.titel
   for read only

open deCursor

fetch next from deCursor into @jaar,@titel, @aard, @volgNr
if (@@fetch_status = 0)
begin      
  set @resultaat = ''
  while (@@fetch_status=0)
    begin
      set @tussen = '<extra>' + 
	'<volgNr>' + convert(varchar(15),@volgNr) + '</volgNr>' +
	'<titel>'+ isNull(@jaar,'')+' '+ isNull(@titel,'')+'</titel>' +
	'<aard>' + isNull(@aard,'') + '</aard>' + '</extra>'
      set @resultaat = @resultaat + isNull(@tussen,'')
      fetch next from deCursor into  @jaar,@titel, @aard, @volgNr
    end
  set @resultaat = '<extraTeksten>' + isNull(@resultaat,'') + '</extraTeksten>'
  updatetext #werk.xml @@ptrval null 0 @resultaat
end
deallocate deCursor

----------------------------------------------------------------------------
--               consultatie van de tabel 'instaptoets'
----------------------------------------------------------------------------

--De veranderlijken, die de waarden uit de tabel zullen opslaan en de bijhorende cursor.

declare @schoolTaal char(1)
declare @intTaal char(1)
declare @totTaal char(1)
declare @schoolWisk char(1)
declare @intWisk char(1)
declare @totWisk char(1)
declare @schoolTot char(1)
declare @intTot char(1)
declare @algTot char(1)declare @erIsTaal bit, @erIsWisk bit

declare @gewoontes char(1)
declare @soms char(1)
declare @toetsDatum char(10)

--De tabel wordt ingelezen
declare deCursor cursor local for 
  select schoolTaal, intTaal, totTaal, 
         schoolWisk, intWisk, totWisk,
	 schoolTot, intTot, algTot, 
	 studiegewoontes, onzekerheid, 
	 datum
  from instaptoets
  where inschrijvingsNr= @hetInr 
for read only

open deCursor
fetch next from deCursor into @schoolTaal, @intTaal, @totTaal,
	@schoolWisk, @intWisk, @totWisk,@schoolTot, 
	@intTot, @algTot, @gewoontes,@soms, @toetsDatum


if (@@fetch_status=0)
  begin
-- De hoofdtags worden ingevoegd:
		updatetext #werk.xml @@ptrval null 0 '<instap>'
		updatetext #werk.xml @@ptrval null 0 '<titel>Instaptoets afgenomen op ' 
		updatetext #werk.xml @@ptrval null 0 @toetsDatum
		updatetext #werk.xml @@ptrval null 0 '</titel>'
     
-- De gegevens taal worden ingevoegd:
	set @erIsTaal = 0
	if (@schooltaal is not null) or (@intTaal is not null) 
 	   begin
                set @erIsTaal = 1
		updatetext #werk.xml @@ptrval null 0 '<taal>'
		updatetext #werk.xml @@ptrval null 0 '<schools>'
		updatetext #werk.xml @@ptrval null 0 @schoolTaal
		updatetext #werk.xml @@ptrval null 0 '</schools>'	
		updatetext #werk.xml @@ptrval null 0 '<intel>'
		updatetext #werk.xml @@ptrval null 0 @intTaal
		updatetext #werk.xml @@ptrval null 0 '</intel>'	
		updatetext #werk.xml @@ptrval null 0 '<totaal>'
		updatetext #werk.xml @@ptrval null 0 @totTaal
		updatetext #werk.xml @@ptrval null 0 '</totaal>'	
	        updatetext #werk.xml @@ptrval null 0 '</taal>'
	    end
-- De gegevens wiskunde worden ingevoegd:
	set @erisWisk = 0
	if (@schoolWisk is not null) or (@intWisk is not null) 
 	   begin
		set @erIsWisk = 1
		updatetext #werk.xml @@ptrval null 0 '<rekenen>'
		updatetext #werk.xml @@ptrval null 0 '<schools>'
		updatetext #werk.xml @@ptrval null 0 @schoolWisk
		updatetext #werk.xml @@ptrval null 0 '</schools>'	
		updatetext #werk.xml @@ptrval null 0 '<intel>'
		updatetext #werk.xml @@ptrval null 0 @intWisk
		updatetext #werk.xml @@ptrval null 0 '</intel>'	
		updatetext #werk.xml @@ptrval null 0 '<totaal>'
		updatetext #werk.xml @@ptrval null 0 @totWisk
		updatetext #werk.xml @@ptrval null 0 '</totaal>'	
		updatetext #werk.xml @@ptrval null 0 '</rekenen>'
	  end
-- De gegevens totaal worden ingevoegd:
	if (@erIsTaal = 1) and (@erIsWisk = 1) 
	  begin
		updatetext #werk.xml @@ptrval null 0 '<globaal>'
		updatetext #werk.xml @@ptrval null 0 '<schools>'
		updatetext #werk.xml @@ptrval null 0 @schoolTot
		updatetext #werk.xml @@ptrval null 0 '</schools>'	
		updatetext #werk.xml @@ptrval null 0 '<intel>'
		updatetext #werk.xml @@ptrval null 0 @intTot
		updatetext #werk.xml @@ptrval null 0 '</intel>'	
		updatetext #werk.xml @@ptrval null 0 '<totaal>'
		updatetext #werk.xml @@ptrval null 0 @algTot
		updatetext #werk.xml @@ptrval null 0 '</totaal>'	 
		updatetext #werk.xml @@ptrval null 0 '</globaal>'
	  end
-- De gegevens studiegewoontes en onzekerheid worden ingevoegd
	updatetext #werk.xml @@ptrval null 0 '<studiegewoontes>'
	updatetext #werk.xml @@ptrval null 0 @gewoontes
	updatetext #werk.xml @@ptrval null 0 '</studiegewoontes>'	
	updatetext #werk.xml @@ptrval null 0 '<soms>'
	updatetext #werk.xml @@ptrval null 0 @soms
	updatetext #werk.xml @@ptrval null 0 '</soms>'	
-- De sluit-tag
		updatetext #werk.xml @@ptrval null 0 '</instap>'
	end
deallocate deCursor

--De veranderlijken, die de waarden uit de tabel leestest zullen opslaan en de bijhorende cursor.

declare @micro varchar(15)
declare @meso varchar(15)
declare @macro varchar(15)
declare @totaal varchar(15)
declare @samenvatting varchar(15)


--De tabel wordt ingelezen
declare deCursor cursor local for 
  select micro, meso, macro, 
         totaal, omschrijving, 
	 datum
  from leerlingen..instapLeestest
  where inschrijvingsNr= @hetInr 
for read only

open deCursor
fetch next from deCursor into @micro, @meso, @macro,
	@totaal, @samenvatting, @toetsDatum


if (@@fetch_status=0)
  begin
-- De hoofdtags worden ingevoegd:
	updatetext #werk.xml @@ptrval null 0 '<leestest>'
	updatetext #werk.xml @@ptrval null 0 '<titel>Leestest afgenomen op ' 
	updatetext #werk.xml @@ptrval null 0 @toetsDatum
	updatetext #werk.xml @@ptrval null 0 '</titel>'
     
-- De gegevens:
	updatetext #werk.xml @@ptrval null 0 '<micro>'
	updatetext #werk.xml @@ptrval null 0 @micro
	updatetext #werk.xml @@ptrval null 0 '</micro>'	
	updatetext #werk.xml @@ptrval null 0 '<meso>'
	updatetext #werk.xml @@ptrval null 0 @meso
	updatetext #werk.xml @@ptrval null 0 '</meso>'	
	updatetext #werk.xml @@ptrval null 0 '<macro>'
	updatetext #werk.xml @@ptrval null 0 @macro
	updatetext #werk.xml @@ptrval null 0 '</macro>'	
	updatetext #werk.xml @@ptrval null 0 '<totaal>'
	updatetext #werk.xml @@ptrval null 0 @totaal
	updatetext #werk.xml @@ptrval null 0 '</totaal>'
	updatetext #werk.xml @@ptrval null 0 '<samenvatting>'
	updatetext #werk.xml @@ptrval null 0 @samenvatting
	updatetext #werk.xml @@ptrval null 0 '</samenvatting>'	
	
-- De sluit-tag
	updatetext #werk.xml @@ptrval null 0 '</leestest>'
	end
deallocate deCursor


----------------------------------------------------------------------------
--               consultatie van de tabel 'dubbeltekst'
----------------------------------------------------------------------------

--De veranderlijken, die de waarden uit de tabel zullen opslaan en de bijhorende cursor.
declare @categorie varchar(50)
declare @subcategorie varchar(50)
declare @kleur varchar(50)
declare @klas varchar(50)
declare @naam varchar(50)
declare @iNr varchar(50)
declare @datum varchar(10)
declare @auteur varchar(50)
declare @omschrijving nvarchar(4000)
declare @remediering nvarchar(4000)
declare deCursor cursor local for 
  select categorie,subcategorie, kleur, klas, naam, iNr, datum, auteur,omschrijving,remediering
  from dubbeltekst 
  where iNr= @hetInr 
  order by datum  
for read only

-- De hoofdtags worden ingevoegd:
updatetext #werk.xml @@ptrval null 0 '<codes>'

-- De gegevens worden ingevoegd:
open deCursor	
fetch next from deCursor 
     	into @categorie, @subcategorie, @kleur, @klas, @naam, @iNr, @datum, @auteur, @omschrijving, @remediering 
while @@fetch_status = 0
  begin
     --Behandeling datums in afwijkend formaat
     select @datum = dbo.verlengDatum(@datum)
     -- Behandeling van speciale tekens die niet correct herkend worden door XML.
     select @omschrijving = replace(replace(replace(@omschrijving,'&','&#038;'),'>','&#062;'),'<','&#060;')      
     select @remediering = replace(replace(replace(@remediering,'&','&#038;'),'>','&#062;'),'<','&#060;')      
            updatetext #werk.xml @@ptrval null 0 '<dubbeltekst>' 
        	updatetext #werk.xml @@ptrval null 0 '<categorie>' 
	updatetext #werk.xml @@ptrval null 0 @categorie 
	updatetext #werk.xml @@ptrval null 0 '</categorie>'
	updatetext #werk.xml @@ptrval null 0 '<subcategorie>'
	updatetext #werk.xml @@ptrval null 0 @subcategorie 
	updatetext #werk.xml @@ptrval null 0 '</subcategorie>'
	updatetext #werk.xml @@ptrval null 0 '<kleur>' 
	updatetext #werk.xml @@ptrval null 0 @kleur 
	updatetext #werk.xml @@ptrval null 0 '</kleur>'
	updatetext #werk.xml @@ptrval null 0 '<klas>'
	updatetext #werk.xml @@ptrval null 0 @klas 
	updatetext #werk.xml @@ptrval null 0 '</klas>'
	updatetext #werk.xml @@ptrval null 0 '<naam>' 
	updatetext #werk.xml @@ptrval null 0 @naam 
	updatetext #werk.xml @@ptrval null 0 '</naam>'
	updatetext #werk.xml @@ptrval null 0 '<iNr>'
	updatetext #werk.xml @@ptrval null 0 @iNr 
	updatetext #werk.xml @@ptrval null 0 '</iNr>'
	updatetext #werk.xml @@ptrval null 0 '<datum>' 
	updatetext #werk.xml @@ptrval null 0 @datum
	updatetext #werk.xml @@ptrval null 0 '</datum>'
	updatetext #werk.xml @@ptrval null 0 '<auteur>'
	updatetext #werk.xml @@ptrval null 0 @auteur 
	updatetext #werk.xml @@ptrval null 0 '</auteur>'
	updatetext #werk.xml @@ptrval null 0 '<omschrijving>' 
	updatetext #werk.xml @@ptrval null 0  @omschrijving
	updatetext #werk.xml @@ptrval null 0 '</omschrijving>'
	updatetext #werk.xml @@ptrval null 0 '<remediering>'
	updatetext #werk.xml @@ptrval null 0  @remediering 
	updatetext #werk.xml @@ptrval null 0 '</remediering>'
    updatetext #werk.xml @@ptrval null 0 '</dubbeltekst>' 
    fetch next from deCursor into @categorie, @subcategorie, @kleur, @klas, @naam, @iNr, @datum, @auteur, @omschrijving, @remediering 
  end
deallocate deCursor
updatetext #werk.xml @@ptrval null 0 '</codes>'
END
--De XML-tekst wordt gexporteerd.
select *  from #werk

return